package com.matrix.im.domain.repository;


import com.matrix.im.domain.model.SystemMessage;
import org.springframework.data.domain.Page;

import java.util.Optional;

/**
 * @author 有点甜
 * @since 2025/8/2
 */
public interface SystemMessageRepository {

    /**
     * 保存系统消息聚合
     *
     * @param message 聚合根
     */
    void save(SystemMessage message);

    /**
     * 通过ID查找系统消息
     *
     * @param messageId 消息ID
     * @return Optional<SystemMessage>
     */
    Optional<SystemMessage> findById(String messageId);

    /**
     * 分页查询用户的系统消息
     *
     * @param userId   用户ID
     * @param pageNum  页码
     * @param pageSize 每页大小
     * @return 系统消息分页结果
     */
    Page<SystemMessage> findByUserId(Long userId, int pageNum, int pageSize);

    /**
     * 统计用户的未读系统消息数
     *
     * @param userId 用户ID
     * @return 未读数
     */
    long countUnread(Long userId);
}
